---
description: Pencatatan Changelog
title: Pencatatan Changelog
language: id-ID
version: 1.0.0
---

- changelog = "https://github.com/olivierlacan/keep-a-changelog/blob/master/CHANGELOG.md"
- gh = "https://github.com/olivierlacan/keep-a-changelog"
- issues = "https://github.com/olivierlacan/keep-a-changelog/issues"
- semver = "https://semver.org/"
- shields = "https://shields.io/"
- thechangelog = "https://changelog.com/podcast/127"
- vandamme = "https://github.com/tech-angels/vandamme/"
- iso = "http://www.iso.org/iso/home/standards/iso8601.htm"
- ghr = "https://help.github.com/articles/creating-releases/"
- aditya = "https://github.com/adityapurwa/"
- edicyber = "https://github.com/cyberid41"

.header
  .title
    %h1 Pencatatan Changelog
    %h2 Standarisasi pencatatan Changelog untuk kolaborasi yang lebih baik

  = link_to changelog do
    Versi
    %strong= current_page.metadata[:page][:version]

  %pre.changelog= File.read("CHANGELOG.md")

.answers
  %h3#what
    %a.anchor{ href: "#what", aria_hidden: "true" }
    Apa itu changelog?

  %p
    Changelog adalah sebuah file yang berisi daftar perubahan yang
    diurutkan secara kronologis untuk setiap versi dari sebuah proyek.

  %h3#why
    %a.anchor{ href: "#why", aria_hidden: "true" }
    Kenapa perlu untuk mencatat changelog?

  %p
    Untuk mempermudah pengguna dan kontributor melihat perubahan
    apa saja yang terjadi antara setiap rilis (atau versi) dari sebuah proyek.

  %h3#who
    %a.anchor{ href: "#who", aria_hidden: "true" }
    Siapa yang membutuhkan changelog?

  %p
    Semua orang membutuhkannya. Baik pengguna ataupun pengembang, setiap
    orang yang menggunakan perangkat lunak adalah manusia yang peduli tentang
    apa yang ada di dalam perangkat lunak tersebut. Ketika perangkat lunak berubah,
    mereka ingin tahu apa yang berubah dan mengapa.

.good-practices
  %h3#how
    %a.anchor{ href: "#how", aria_hidden: "true" }
    Bagaimana cara membuat changelog yang baik?

  %h4#principles
    %a.anchor{ href: "#principles", aria_hidden: "true" }
    Prinsip-prinsip Dasar

  %ul
    %li
      Changelog ditulis untuk <em>manusia</em>, bukan mesin.
    %li
      Harus ada catatan untuk setiap versi.
    %li
      Setiap tipe perubahan yang sama harus dikelompokkan.
    %li
      Versi dan seksi harus dapat dirujuk.
    %li
      Versi yang terakhir harus ditulis di paling atas.
    %li
      Tanggal rilis setiap versi harus ditulis.
    %li
      Berikan informasi jika kalian menggunakan #{link_to "Semantic Versioning", semver}.

  %a.anchor{ href: "#types", aria_hidden: "true" }
  %h4#types Jenis-jenis perubahan

  %ul
    %li
      %code Added/Ditambahkan
      untuk fitur yang baru.
    %li
      %code Changed/Diubah
      untuk perubahan di fitur yang sudah ada.
    %li
      %code Deprecated/Akan Dhilangkan
      untuk fitur yang akan dihapus dalam waktu dekat.
    %li
      %code Removed/Dihilangkan
      untuk fitur yang sudah dihapus.
    %li
      %code Fixed/Diperbaiki
      untuk setiap perbaikan bugs.
    %li
      %code Security/Keamanan
      jika ada celah keamanan.

.effort

  %h3#effort
    %a.anchor{ href: "#effort", aria_hidden: "true" }
    Apa yang bisa saya lakukan untuk mempermudah pemeliharaan changelog?

  %p
    Sisakan bagian <code>Unreleased/Belum Dirilis</code> di bagian paling atas
    file changelog untuk mencatat perubahan yang akan datang.


  %p Hal ini berguna untuk dua hal:

  %ul
    %li
      Orang-orang bisa melihat perubahan apa saja yang akan datang.
    %li
      Saat waktu rilis datang, tinggal pindahkan bagian <code>Unreleased/Belum Dirilis</code>
      ke catatan rilis versi baru di bawah.

.bad-practices
  %h3#bad-practices
    %a.anchor{ href: "#bad-practices", aria_hidden: "true" }
    Apakah changelog bisa menjadi tidak bermanfaat?

  %p Bisa, berikut beberapa skenario ketika changelog menjadi tidak bermanfaat:

  %h4#log-diffs
    %a.anchor{ href: "#log-diffs", aria_hidden: "true" }
    Menggunakan Commit log diffs sebagai changelog

  %p
    Menggunakan commit log diffs (catatan perbedaan setiap commit) bisa
    membuat changelog susah untuk dibaca. Commit dengan judul yang tidak jelas,
    dokumentasi perubahan, dan sebagainya, malah akan membuat
    changelog terlalu berisik dan susah dibaca.

  %p
    <em>The purpose of a commit is to document a step in the evolution of
    the source code. Some projects clean up commits, some don't</em>.
    Tujuan utama dari commit adalah untuk mencatat setiap perubahan dari source
    code. Beberapa proyek merapikan commitnya, beberapa tidak.

  %p
    Tujuan dari changelog adalah untuk mencatat perubahan yang pantas
    untuk dicatat, bisa jadi beberapa commit dijadikan satu catatan
    untuk lebih memudahkan pembaca.

  %h4#ignoring-deprecations
    %a.anchor{ href: "#ignoring-deprecations", aria_hidden: "true" }
    Mengabaikan Deprecations (fitur yang akan dihilangkan)

  %p
    Saat menaikkan versi, harus ditulis dengan jelas apa saja
    yang kira-kira bisa membuat sistem tidak berjalan. Sebaiknya
    terdapat versi yang mencatat apa saja yang akan dihilangkan,
    lalu menghapus fitur yang dihilangkan, dan naikkan lagi ke versi
    dengan fitur yang sudah dihilangkan.

  %p
    Jika kalian tidak mengubah apapun, tetap catat fitur yang akan
    dihilangkan, fitur yang sudah dihilangkan, dan perubahan-perubahan
    lain yang bisa membuat sistem tidak berjalan.


  %h4#confusing-dates
    %a.anchor{ href: "#confusing-dates", aria_hidden: "true" }
    Perbedaan Format Tanggal

  %p
    Format tanggal regional berbeda-beda sesuai dengan budaya masing-masing,
    dan seringkali perbedaan ini susah untuk dipahami dan dimengerti.
    Penggunaan format tanggal <code>2017-07-17</code> lebih mudah untuk dimengerti,
    karena diurutkan berdasarkan unit terbesar: tahun, bulan, dan tanggal.
    Format ini juga merupakan #{link_to "Standar ISO", iso}, sehingga
    inilah yang dipakai untuk pencatatan changelog.

  %aside
    Ada beberapa permasalahan lainnya, bantu kami dengan beberapa antipatterns
    dengan #{link_to "mengirimkan issue", issues} atau kirimkan pull request.

.frequently-asked-questions
  %h3#frequently-asked-questions
    %a.anchor{ href: "#frequently-asked-questions", aria_hidden: "true" }
    Pertanyaan yang Sering Ditanyakan

  %h4#standard
    %a.anchor{ href: "#standard", aria_hidden: "true" }
    Apakah ada standar untuk format changelog?

  %p
    Tidak, ada format GNU untuk changelog, atau format 2 paragraf GNU NEWS.
    Keduanya tidak benar-benar cukup, gunakan format yang disetujui tim masing-masing.

  %p
    Proyek ini ditujukan untuk
    = link_to "membuat aturan changelog yang lebih baik", changelog
    berdasarkan observasi beberapa changelog di komunitas open source
    dan menyatukan mereka.

  %p
    Kritik yang membangun, diskusi, dan saran untuk perbaikan
    = link_to "sangat diterima.", issues


  %h4#filename
    %a.anchor{ href: "#filename", aria_hidden: "true" }
    Apa nama file yang cocok untuk file changelog?

  %p
    Gunakan nama <code>CHANGELOG.md</code>, beberapa proyek
    menggunakan <code>HISTORY</code>, <code>NEWS</code> atau <code>RELEASE</code>.

  %p
    Sebenarnya tidak terlalu susah untuk menamai file changelog, cukup
    berikan nama yang mudah dikenali oleh orang-orang
    supaya mudah untuk dibaca.

  %h4#github-releases
    %a.anchor{ href: "#github-releases", aria_hidden: "true" }
    Apa itu GitHub Releases?

  %p
    #{link_to "Github Release", ghr} adalah salah satu
    insiatif dari GitHub untuk membuat changelog berdasarkan git tags,
    contohnya, tag dengan nama <code>v1.0.0</code>. Isi dari changelog
    bisa ditulis manual atau menggunakan pesan yang ditulis bersamaan dengan
    tags.

  %p
    GitHub Releases membuat changelog yang tidak portable dan hanya bisa
    bekerja dengan baik di lingkup GitHub. Sangat mungkin untuk
    membuat GitHub Releases terlihat mirip dengan format pencatatan changelog
    yang dijelaskan di sini, tapi butuh usaha ekstra.

  %p
    Versi GitHub releases yang sekarang juga tidak terlalu umum
    untuk orang-orang, dan hanya bisa dibuka melalui sub menu
    di GitHub, berbeda dengan file-file seperti
    (<code>README</code>, <code>CONTRIBUTING</code>, dsb.) yang
    langsung terlihat saat proyek pertama kali dibuka. Keterbatasan lainnya
    adalah tidak adanya link di GitHub releases.

  %h4#automatic
    %a.anchor{ href: "#automatic", aria_hidden: "true" }
    Apakah Changelog Bisa Diparse Secara Otomatis?

  %p
    Susah, karena orang-orang menggunakan versi dan format
    changelog yang berbeda-beda.

  %p
    #{link_to "Vandamme", vandamme} adalah Ruby Gem yang dibuat oleh tim
    Gemnasium yang bisa mem-parsing (tetapi tidak semua) changelog proyek open source.


  %h4#yanked
    %a.anchor{ href: "#yanked", aria_hidden: "true" }
    Bagaimana dengan Rilis YANKED (rilis yang dibatalkan)?

  %p
    Rilis yang dibatalkan adalah rilis yang dibatalkan, bisa jadi
    karena ada bug yang fatal dan permasalahan keamanan. Versi
    ini sering tidak dimasukkan ke changelog, padahal seharusnya ditulis
    sebagaimana berikut.

  %p <code>## 0.0.5 - 2014-12-13 [YANKED/DIBATALKAN]</code>

  %p
    Tag <code>[YANKED/DIBATALKAN]</code> ditulis dengan jelas supaya
    orang memperhatikannya, dan dikurung dengan kurung kotak supaya
    mudah untuk diparse.


  %h4#rewrite
    %a.anchor{ href: "#rewrite", aria_hidden: "true" }
    Bolehkah Menulis Ulang Changelog?

  %p
    Tentu saja, ada banyak alasan bagus untuk menulis ulang changelog,
    salah satunya untuk rilis-rilis yang lupa untuk dituliskan di
    beberapa proyek.

  %p
    Juga sangat mungkin saat menulis ulang, kalian ingat tentang perubahan
    yang bisa membuat sistem tidak bekerja yang belum dituliskan. Dalam hal ini,
    sangat penting untuk mengubah changelog supaya datanya lebih akurat.


  %h4#contribute
    %a.anchor{ href: "#contribute", aria_hidden: "true" }
    Bagaimana Saya Bisa Berkontribusi?

  %p
    Dokumen ini bukan kebenaran absolut, ini hanyalah opini yang dikumpulkan
    dari beberapa informasi dan contoh yang kami kumpulkan.

  %p
    Ini karena kami ingin komunitas terus berdiskusi untuk mencapai konsensus
    yang terbaik untuk pencatatan changelog.

  %p
    Jadi silahkan, <strong>#{link_to "kirimkan saran", gh}</strong>.

  %h4#about-translation
    %a.anchor{ href: "#about-translation", aria_hidden: "true" }
    Tentang Terjemahan Bahasa Indonesia

  %p
    Terjemahan Bahasa Indonesia diterjemahkan oleh #{link_to "Aditya Purwa", aditya}
    dan dikoreksi oleh #{link_to "Edi Santoso", edicyber}, silahkan
    sampaikan jika ada terjemahan yang lebih baik.

.press
  %h3 Percakapan
  %p
    Kami mengisi acara di #{link_to "Podcast Changelog", thechangelog}
    untuk berbicara tentang kenapa maintainer dan kontributor harus peduli
    dengan changelog, dan motivasi dari proyek ini.
